Pointer analysis is used for different applications, e.g., compilers, debugging tools and program understanding tools, each having different requirements. Typically, pointer analysis attempts to statically determine the runtime targets of pointer variables in a program, for example at compile time. The information obtained through pointer analysis can be used, for example, to determine whether two pointers are potentially aliased, i.e., whether the two pointers point to the same location. In traditional approaches, increasing the precision of pointer analysis increases the cost associated with the pointer analysis. The precision and the associated cost are typically controlled by adjusting the flow sensitivity and path sensitivity of the pointer analysis. The least accurate and least costly pointer analysis takes a flow insensitive approach. Accuracy and cost is increased by taking a flow sensitive approach in the pointer analysis. The most accurate and most costly approach is to take a path sensitive approach to pointer analysis. Obtaining the most precise, i.e. flow and path sensitive solution, however, is impractical and even relatively imprecise solutions can be very expensive.